﻿using System.IO;

namespace Ahresty
{
    /// <summary>
    /// 外部から取得する必要なパラメータを集合するクラス
    /// </summary>
    internal static class Parameters
    {
        #region WorkDir

        /// <summary>
        /// 作業フォルダパス
        /// </summary>
        internal static string WorkDir { get; set; }

        #endregion

        #region OutputDir

        /// <summary>
        /// 出力フォルダパス（ワークフォルダに依存）
        /// </summary>
        internal static string OutputDir
        {
            get
            {
                return Path.Combine(Parameters.WorkDir, "output");
            }
        }

        #endregion

        #region TempDir

        /// <summary>
        /// テンポラリフォルダパス（ワークフォルダに依存）
        /// </summary>
        internal static string TempDir
        {
            get
            {
                return Path.Combine(Parameters.WorkDir, "temp");
            }
        }

        #endregion

        #region StlMixMessherFilePath

        /// <summary>
        /// ADSTEFANの『stlmixmessher.exe』のファイルパス
        /// </summary>
        internal static string StlMixMessherFilePath { get; set; }

        #endregion

        #region OutlineFilePath

        /// <summary>
        /// ADSTEFANの『outline.exe』のファイルパス
        /// </summary>
        internal static string OutlineFilePath { get; set; }

        #endregion

        #region LineTouchFlg

        /// <summary>
        /// 「線接触要素補充」の実行フラグ
        /// </summary>
        internal static bool LineTouchFlg { get; set; }

        #endregion

        #region PointTouchFlg

        /// <summary>
        /// 「点接触要素補充」の実行フラグ
        /// </summary>
        internal static bool PointTouchFlg { get; set; }

        #endregion

        #region BoardFlg

        /// <summary>
        /// 「薄板形状要素補充」の実行フラグ
        /// </summary>
        internal static bool BoardFlg { get; set; }

        #endregion

        #region PipeFlg

        /// <summary>
        /// 「細管形状要素補充」の実行フラグ
        /// </summary>
        internal static bool PipeFlg { get; set; }

        #endregion

        #region ConcaveFlg

        /// <summary>
        /// 「凹部要素補充」の実行フラグ
        /// </summary>
        internal static bool ConcaveFlg { get; set; }

        #endregion

        #region ProtuberanceFlg

        /// <summary>
        /// 「凸部要素補充」の実行フラグ
        /// </summary>
        internal static bool ProtuberanceFlg { get; set; }

        #endregion

        #region IsolatedFlg

        /// <summary>
        /// 「孤立要素補充」の実行フラグ
        /// </summary>
        internal static bool IsolatedFlg { get; set; }

        #endregion

        #region IsDebugMode

        /// <summary>
        /// デバッグモードフラグ
        /// </summary>
        internal static bool IsDebugMode { get; set; }

        #endregion

        #region MaterialID

        /// <summary>
        /// 材料番号（メッシュ修正対象）
        /// </summary>
        internal static byte MaterialID { get; set; }

        #endregion

        #region AirMaterialID

        /// <summary>
        /// 空気材料番号
        /// </summary>
        internal const byte AirMaterialID = (byte)'2';

        #endregion

        #region UnknownMaterialID

        /// <summary>
        /// 未判定要素の材料番号
        /// </summary>
        internal static byte UnknownMaterialID { get; set; }

        #endregion

        #region LineTouchID

        /// <summary>
        /// 線接触用のデバッグ材料番号
        /// </summary>
        internal static byte LineTouchID { get; set; }

        #endregion

        #region PointTouchID

        /// <summary>
        /// 点接触用のデバッグ材料番号
        /// </summary>
        internal static byte PointTouchID { get; set; }

        #endregion

        #region BoardID

        /// <summary>
        /// 薄板用のデバッグ材料番号
        /// </summary>
        internal static byte BoardID { get; set; }

        #endregion

        #region PipeID

        /// <summary>
        /// 細管用のデバッグ材料番号
        /// </summary>
        internal static byte PipeID { get; set; }

        #endregion

        #region ConcaveID

        /// <summary>
        /// 凹部用のデバッグ材料番号
        /// </summary>
        internal static byte ConcaveID { get; set; }

        #endregion

        #region ProtuberanceID

        /// <summary>
        /// 凸部用のデバッグ材料番号
        /// </summary>
        internal static byte ProtuberanceID { get; set; }

        #endregion

        #region IsolatedID

        /// <summary>
        /// 孤立要素用のデバッグ材料番号
        /// </summary>
        internal static byte IsolatedID { get; set; }

        #endregion

        #region ExeCount

        /// <summary>
        /// 占有率検索回数
        /// </summary>
        internal static int ExeCount { get; set; }

        #endregion
    }
}
